RFC: تخزين ساكن مسمّى + سمات التخزين (@رمز/@متطاير/@محزوم/بايتات) — اللبنة 3.14#39
Open
SalehKadah wants to merge 1 commit into
Open
RFC: تخزين ساكن مسمّى + سمات التخزين (@رمز/@متطاير/@محزوم/بايتات) — اللبنة 3.14#39SalehKadah wants to merge 1 commit into
SalehKadah wants to merge 1 commit into
Conversation
…ضمَّنة
اللبنة 3.14 من إطفاء C. تمكّن ص من تعريف مخزن ساكن مسمّى برمز رابط مستقرّ مُصدَّر
في .bss/.rodata مع سمات: @رمز("اسم") رمز مُصدَّر، إصلاح @متطاير على التصريح،
@محزوم رصّ، وحرفيّة بايتات(...) كتلة .rodata. يكمّل عنوان_رمز (3.13): ص تعرّف
المخزن وتأخذ عنوانه بالاسم نفسه ⇒ تُملّك النواة عدّاداتها/خريطتها/أرشيفها بدل C.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SalehKadah
added a commit
to sadlang/s-programming-language
that referenced
this pull request
Jul 21, 2026
…، إطفاء C) البدائيّة الثالثة من RFC تخزين ساكن (sadlang/rfcs#39): بيانات مضمَّنة. @رمز("bee_initrd") ثابت أرشيف = بايتات(0x53، ...) ⇒ @bee_initrd = constant [N x i8] c"..." في .rodata برمز مُصدَّر، يأخذ عنوان_رمز عنوانه. لجداول النواة (أرشيف SFA1، خرائط المفاتيح) المملوكة لـص بدل C. - Phase 1.5: كشف مُهيّئ CallExpr باسم بايتات ⇒ استخراج البايتات (0–255، hex/oct/bin/dec، رفض غير الحرفيّ/الفارغ/خارج المدى) في SIRGlobalVariable.byteData. - الخلفيّة: ConstantDataArray في .rodata (isConstant⇒rodata، متغير⇒data) بربط @رمز المُصدَّر + حارس تصادم SEM022. محاذاة 1. - تخطّي دفع التصريح لـtopLevelStatements (تفادي معالجة بايتات كنداء غير معرّف). اختبار 8 حالات بايتات (rodata ثابت + محتوى c"SAD" + عنونة بعنوان_رمز + خارج المدى + فارغ + غير ثابت⇒data). 31/31 حرّ أخضر، gen --check أخضر. مراجعة أميليا: الجوهر سليم (استخراج/مدى/ConstantDataArray/SEM022/isConstant/ مستضاف مؤكَّدة)؛ أُصلح الفارغ (C2) + ثابت مسمّى kByteBlobBuiltin (S1). قيود موثَّقة خارج نطاق نهلة: بايتات مع صدّر/كتعبير داخل دالّة/قراءة بالاسم مباشرةً. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
SalehKadah
added a commit
to sadlang/s-programming-language
that referenced
this pull request
Jul 21, 2026
…C) (#225) * مترجم: تخزين ساكن مسمّى — @رمز("اسم") + لصيقة «متطاير» (اللبنة 3.14، إطفاء C) بدائيّتان من RFC تخزين ساكن (sadlang/rfcs#39) تمكّنان ص من تعريف مخزن ساكن عامّ برمز رابط مستقرّ مُصدَّر ومتطاير — تكميلًا لـعنوان_رمز (3.13): - @رمز("bee_x") متغير/ثابت ⇒ GlobalVariable بـExternalLinkage واسم bee_x بدل الاسم العربيّ المُشوَّه InternalLinkage (مفتاح namedValues يبقى الاسم العربيّ فتُحَل مراجع ص). حارس تصادم SEM022: اسم مكرّر أو محجوز لزمن التشغيل (memset/malloc/__sad_*) ⇒ خطأ مفهوم بدل إعادة تسمية الرابط الصامتة. - «متطاير» لصيقة لاحقة عربيّة سليمة: «متغير متطاير عداد = 0» (الموصوف ثمّ الصفة) بدل توجيه @متطاير المحذوف (calque إنجليزيّ، خالف قاعدة الصفة). كلمة سياقيّة تُقبَل KEYWORD_VOLATILE أو IDENTIFIER. تمريرة لاحقة على الوحدة تعلّم كلّ load/store يمسّ المخزن volatile (متينة ضدّ تعدّد مسارات إصدار الأحمال). 6 نقاط تماسّ: statements.h (linkSymbol/isVolatile) + sir_module.h (linkName/isVolatile+getLinkName) + parser (لصيقة متطاير + فرع @رمز + حذف @متطاير من isDirectiveKeyword) + sir_builder_module (نقل السمات) + classes_vtables_ops (ExternalLinkage + حارس SEM022 + تمريرة volatile) + mem_load/store/arith_resolve (وسم موضعيّ داعم). خطأ SEM022 + توجيه @رمز في directives.yaml (SoT). اختبار 9 حالات (test_static_storage.py): رمز مُصدَّر/ثابت rodata، volatile كتابة/قراءة، تركيب @رمز+متطاير، ثابت متطاير، تصادم محجوز/مكرّر (SEM022)، حارس العاديّ يبقى internal. 26/26 حرّ أخضر، gen --check أخضر. مراجعة أميليا: صفر عيب يكسر المسار؛ أُصلح تصادم الرمز الصامت (SEM022، البند الحاسم)؛ حُذف كود VolatileVarDeclStmt الميت. دَين موثَّق: متطاير على تصريح متعدّد وعنصر مصفوفة عبر GEP خارج النطاق الحاليّ. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * مترجم: بايتات(...) — كتلة بايتات ثابتة مسمّاة في .rodata (اللبنة 3.14، إطفاء C) البدائيّة الثالثة من RFC تخزين ساكن (sadlang/rfcs#39): بيانات مضمَّنة. @رمز("bee_initrd") ثابت أرشيف = بايتات(0x53، ...) ⇒ @bee_initrd = constant [N x i8] c"..." في .rodata برمز مُصدَّر، يأخذ عنوان_رمز عنوانه. لجداول النواة (أرشيف SFA1، خرائط المفاتيح) المملوكة لـص بدل C. - Phase 1.5: كشف مُهيّئ CallExpr باسم بايتات ⇒ استخراج البايتات (0–255، hex/oct/bin/dec، رفض غير الحرفيّ/الفارغ/خارج المدى) في SIRGlobalVariable.byteData. - الخلفيّة: ConstantDataArray في .rodata (isConstant⇒rodata، متغير⇒data) بربط @رمز المُصدَّر + حارس تصادم SEM022. محاذاة 1. - تخطّي دفع التصريح لـtopLevelStatements (تفادي معالجة بايتات كنداء غير معرّف). اختبار 8 حالات بايتات (rodata ثابت + محتوى c"SAD" + عنونة بعنوان_رمز + خارج المدى + فارغ + غير ثابت⇒data). 31/31 حرّ أخضر، gen --check أخضر. مراجعة أميليا: الجوهر سليم (استخراج/مدى/ConstantDataArray/SEM022/isConstant/ مستضاف مؤكَّدة)؛ أُصلح الفارغ (C2) + ثابت مسمّى kByteBlobBuiltin (S1). قيود موثَّقة خارج نطاق نهلة: بايتات مع صدّر/كتعبير داخل دالّة/قراءة بالاسم مباشرةً. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * مترجم: إعادة توليد قواعد TextMate بعد تغيير التوجيهات (3.14) انجراف sad.tmLanguage.json عن language-truth: حُذف @متطاير وأُضيف @رمز في directives.yaml. أُعيد التوليد عبر gen_tmgrammar.py. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ملخّص
تمكين ص من تعريف مخزن ساكن مسمّى برمز رابط مستقرّ ومُصدَّر في
.bss/.rodata،مع 4 بدائيّات متلازمة:
@رمز("اسم")(رمز مُصدَّر)، إصلاح@متطايرعلى التصريح(مكسور حاليًّا)،
@محزوم(رصّ)، وحرفيّةبايتات(...)(كتلة.rodata).السياق
اللبنة 3.14 من إطفاء C، تكمّل
عنوان_رمز(3.13، PR #224). بعد أن صارت ص تأخذعنوان الرمز، هذا المقترح يجعلها تعرّف المخزن نفسه — فتُملّك النواةَ عدّاداتها
(
bee_probe_hits…) وخريطتها البتّيّة وأرشيفها بدل مخازن C.غرض كلّ بدائيّة
@رمز("bee_x")— الرافعة الأمّ: رمز مُصدَّر ثابت يلتقي عليه أكعاب المقاطعة(C) +
عنوان_رمز+ عقد ABI. بدونه المخزن باسم داخليّ مُشوَّه لا يصلح أرضيّةً مشتركة.@متطاير(إصلاح) — صحّة: العدّادات يكتبها سياق مقاطعة ويقرؤها فحص في حلقة؛بلا volatile يُخبّئ المُحسِّن القراءة ⇒ حلقة أبديّة. العلم يُسقَط اليوم في
statement_advanced.cpp:159.@محزوم— مفتاح ترحيل الواصفات: تخطيط IDTR/GDTR/البوّابات يفرضه المعالج؛بلا رصّ يحشو المترجم ⇒ عطل.
isPackedمقيَّدfalseحاليًّا.بايتات(...)— جداول.rodataمملوكة: أرشيف SFA1 وخريطة set-1 كثابت حقيقيّبرمز مستقرّ، لا مصفوفة كومة.
النموذج القائم (من الاستكشاف)
ص تملك globals حقيقيّة (top-level
متغير⇒GlobalVariableفي.bss/.rodata)والبنية التحتيّة للأقسام (
LLVMCustomSections,setSection) وتمثيلConstantDataArray— لكنّها يتيمة/داخليّة بلا واجهة لغويّة مستقرّة. المقترح يصل هذه البنية بصياغة.
النطاق
الأربع بدائيّات كاملةً (الخيار الأقوى): حذف أيٍّ منها يُبقي صنفًا كاملًا من مخازن C.
@قسم(".name")الصريح والـstatics المحلّيّة والتهيئة الثابتة المحسوبة — مؤجَّلة.أسئلة للنقاش
بايتات: مدمجبايتات(...)أم مصفوفة ثابتة مكتوبة.@محزوم(أضعفها ترابطًا) أم يبقى ضمن الحزمة.@رمزعلى المستوى الأعلى فقط أم يشمل statics محلّيّة.🤖 Generated with Claude Code